Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Rendered • View rawDownload


lang/README.ru.md HEAD (b89dc9e6) Text, 25.81 KB

Reticulum MeshChatX


Существенно доработанный и функционально расширенный форк Reticulum MeshChat от Liam Cottle.

Этот проект независим от оригинального Reticulum MeshChat и не связан с ним.

• Сайт: meshchatx.com
• Исходный код: github.com/Quad4-Software/MeshChatX
• Журнал изменений: CHANGELOG.md
• Поддержка проекта: donate.md (Поддержка проекта)
• LXMF: T383838f489752fbef161c64d65e385a4e9fc74
• Umbrel App Store: apps.umbrel.com/app/meshchatx

<a href="https://apps.obtainium.imranr.dev/redirect.html?r=obtainium://add/https://github.com/Quad4-Software/MeshChatX"><img src="https://raw.githubusercontent.com/ImranR98/Obtainium/main/assets/graphics/badge_obtainium.png" height="60" alt="Get it on Obtainium"></a>

rngit NomadNet Node: T3838385399f5a0212477618821e91e88ce053b:/page/index.mu

rngit: T383838git clone rns://926baefe13daf5178c174f158dae1b45/quad4/MeshChatX

MeshChatX NomadNet Node: T383838c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu

Важные отличия от Reticulum MeshChat

• Для вызовов используется LXST
• Peewee ORM заменён на прямой SQL
• Axios заменён на нативный T383838fetch
• Electron 41.x (встроенная среда Node 24)
• Колёса T383838.whl с веб-сервером и встроенным фронтендом для разных сценариев развёртывания
• i18n
• PNPM и UV для зависимостей

│ [!WARNING] MeshChatX не гарантирует совместимость данных со старыми версиями Reticulum MeshChat.
│ Сделайте резервную копию перед миграцией или тестированием.

│ [!WARNING] Устаревшие системы пока не поддерживаются. Текущий базис: Python T383838>=3.11 и Node T383838>=24
│ (Electron 41 выровнен с Node 24; поле T383838engines в T383838package.json и CI на той же линии).

Требования

• Python T383838>=3.11 (из T383838pyproject.toml)
• Node.js T383838>=24 (из T383838package.json, поле T383838engines)
• pnpm T38383811.1.2 (из T383838package.json, поле T383838packageManager)
• UV (используется в T383838Taskfile.yml и CI)

Browser Versions Required:

Safari 16.4 или новее, Chrome 111 или новее, Firefox 128 или новее (встроенный веб-интерфейс).

T282828
task install
task format
task lint
task Tffa657test
task build


Способы установки

Выберите способ в соответствии со средой и форматом пакета.

┌─────────────────────┬─────────────────────┬──────────────┬───────────────────────────────────────┐
│ Метод │ Включает фронтенд │ Архитектуры │ Лучше всего для │
├─────────────────────┼─────────────────────┼──────────────┼───────────────────────────────────────┤
│ Docker-образ │ Да │ T383838linux/amd64… │ Быстрый запуск на серверах Linux │
│ Python wheel (T383838.whl) │ Да │ Любая архит… │ Безголовый/веб-сервер без сборки Node │
│ Linux AppImage │ Да │ T383838x64, T383838arm64 │ Портативное использование на ПК │
│ Debian-пакет (T383838.deb) │ Да │ T383838x64, T383838arm64 │ Установка на Debian/Ubuntu │
│ RPM-пакет (T383838.rpm) │ Да │ Зависит от … │ Fedora/RHEL/openSUSE │
│ Из исходников │ Собирается локально │ Архитектура… │ Разработка и кастомные сборки │
└─────────────────────┴─────────────────────┴──────────────┴───────────────────────────────────────┘

Примечания:

• GitHub Actions собирает помеченные тегом релизы (Linux wheel/AppImage/deb/rpm, Windows, macOS, Flatpak, Android APK при теге на dev/master, SLSA, черновик релиза) в одном запуске: T383838.github/workflows/build-release.yml. Образ контейнера: T383838.github/workflows/docker.yml. Android CI для веток и PR: T383838.github/workflows/android-build.yml.
• AppImage + DEB для Linux T383838x64 и T383838arm64 собираются на GitHub; RPM собирается по возможности и выкладывается, если шаг дал артефакт.

Docker

Docker Hub: T383838quad4io/meshchatx
GHCR: T383838ghcr.io/quad4-software/meshchatx

T282828
docker compose up -d

T282828
docker run -d --name reticulum-meshchatx Tffea00\
--restart unless-stopped Tffea00\
--init Tffea00\
--user T79c0ff1000:1000 Tffea00\
--security-opt no-new-privileges:true Tffea00\
--cap-drop ALL Tffea00\
--read-only Tffea00\
--tmpfs /tmp:noexec,nosuid,sizeTff7b72=256m Tffea00\
--tmpfs /home/meshchat:nosuid,sizeTff7b72=64m Tffea00\
--cpusTff7b72=T79c0ff2.0 Tffea00\
--memoryTff7b72=1g Tffea00\
--memory-reservationTff7b72=256m Tffea00\
--pids-limitTff7b72=T79c0ff512 Tffea00\
-p T79c0ff127.0.0.1:8000:8000 Tffea00\
-v meshchatx-config:/config Tffea00\
ghcr.io/quad4-software/meshchatx:latest


Вместо образа GHCR можно указать T383838quad4io/meshchatx:latest, если предпочитаете Docker Hub.

Compose-файл по умолчанию:

• T383838127.0.0.1:8000 на хосте -> порт T3838388000 контейнера
• Именованный том Docker T383838meshchatx-config -> T383838/config для данных (подходит пользователю meshchat в образе, UID 1000, без T383838chown на хосте для bind mount)

По желанию: каталог на хосте

Замените строку тома на T383838-v "$(pwd)/meshchat-config:/config" (Compose: измените T383838volumes у сервиса). Контейнер работает от UID 1000; каталог на хосте должен быть доступен на запись (обычно: T383838sudo chown -R 1000:1000 ./meshchat-config). Создайте пустой каталог до первого запуска, чтобы Docker не создал его с неподходящими правами.

Просмотр или удаление именованного тома

T282828
docker volume inspect meshchatx-config
docker rm -f reticulum-meshchatx
docker volume rm meshchatx-config

Установка из релизных артефактов

1) Linux AppImage (x64/arm64)

1. Скачайте T383838ReticulumMeshChatX-v<версия>-linux-<арх>.AppImage из релизов.
2. Сделайте исполняемым и запустите:

T282828
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage

2) Debian/Ubuntu T383838.deb (x64/arm64)

1. Скачайте T383838ReticulumMeshChatX-v<версия>-linux-<арх>.deb.
2. Установите:

T282828
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb

3) RPM-системы

1. Скачайте T383838ReticulumMeshChatX-v<версия>-linux-<арх>.rpm, если есть в релизе.
2. Установите:

T282828
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm

4) Python wheel (T383838.whl)

В релизных wheel включены собранные веб-ресурсы.

T282828
pip install ./reticulum_meshchatx-*-py3-none-any.whl
meshchatx --headless

T383838pipx также поддерживается:

T282828
pipx install ./reticulum_meshchatx-*-py3-none-any.whl

Запуск из исходников (режим веб-сервера)

Для разработки или локальной сборки.

T282828
git clone https://github.com/Quad4-Software/MeshChatX.git
Tffa657cd MeshChatX
corepack Tffa657enable
pnpm config Tffa657set verify-store-integrity Tffa657true
pnpm install --frozen-lockfile
pip install Ta5d6ff"uv==0.11.15"
uv lock --check
uv sync --group dev
pnpm run build-frontend
uv run python -m meshchatx.meshchat --headless --host T79c0ff127.0.0.1


Пояснения к командам установки:

• T383838pnpm install --frozen-lockfile запрещает обновление T383838pnpm-lock.yaml и завершится с ошибкой, если lock-файл не соответствует T383838package.json. Это исключает скрытую установку неожиданной upstream-версии.
• T383838verify-store-integrity=true уже задан в T383838pnpm-workspace.yaml проекта; явный T383838pnpm config set дополнительно ужесточает пользовательскую конфигурацию.
• Lifecycle-скрипты (T383838preinstall/T383838postinstall) по умолчанию заблокированы в pnpm v11+. Скрипты установки могут запускать только пакеты из T383838allowBuilds в T383838pnpm-workspace.yaml (сейчас T383838electron, T383838electron-winstaller, T383838esbuild).
• T383838uv lock --check сразу падает, если T383838uv.lock не синхронизирован с T383838pyproject.toml; затем T383838uv sync --group dev ставит зависимости только из lock-файла.
• Для строгой установки только из lock-файла зафиксируйте UV через T383838pip install "uv==0.11.15", как это делает CI.

Если вы намеренно хотите обновить зависимости, выполните T383838pnpm update / T383838uv lock отдельным коммитом и проверьте diff lock-файлов до пуша.

Запуск в песочнице (Linux)

Чтобы запускать нативный T383838meshchatx (псевдоним: T383838meshchat) с дополнительной изоляцией файловой системы, можно использовать Firejail или Bubblewrap (T383838bwrap), сохраняя обычный сетевой доступ для Reticulum и веб-интерфейса. Полные примеры (pip/pipx, UV, USB-serial) в:


Та же страница отображается в списке Документация (документация MeshChatX) в приложении, если файлы отдаются из встроенных или синхронизированных T383838meshchatx-docs.

Linux на ПК: шрифты эмодзи

Выбор эмодзи отображает стандартные Unicode-эмодзи системными шрифтами (Electron/Chromium). Если вместо них пустые квадраты («тофу»), установите пакет цветных эмодзи и перезапустите приложение.

┌────────────────────────────┬──────────────────────────────────────────────────────────────────┐
│ Семейство (примеры) │ Пакет │
├────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Arch Linux, Artix, Manjaro │ T383838noto-fonts-emoji (T383838sudo pacman -S noto-fonts-emoji) │
│ Debian, Ubuntu │ T383838fonts-noto-color-emoji (T383838sudo apt install fonts-noto-color-emoji) │
│ Fedora │ T383838google-noto-emoji-color-fonts
└────────────────────────────┴──────────────────────────────────────────────────────────────────┘

После установки при необходимости выполните T383838fc-cache -fv. Опционально: T383838noto-fonts для лучшего покрытия символов на минимальных установках.

Сборка настольных пакетов из исходников

Скрипты заданы в T383838package.json и T383838Taskfile.yml.

Linux x64 AppImage + DEB

T282828
pnpm run dist:linux-x64

Linux arm64 AppImage + DEB

T282828
pnpm run dist:linux-arm64

RPM

T282828
pnpm run dist:rpm

Через Task:

T282828
task dist:fe:rpm

Сборка в контейнере (wheel, AppImage, deb, rpm)

T383838Dockerfile.build выполняет те же шаги, что и CI (uv, pnpm, T383838task, пакетные зависимости APT). Ориентирован на linux/amd64 (NodeSource amd64, Task amd64). Цель по умолчанию: всё; её можно переопределить build-arg.

Для T383838MESHCHATX_BUILD_TARGETS доступны: T383838all (по умолчанию), T383838wheel или T383838electron (AppImage + deb для x64 и arm64, RPM по возможности, без wheel).

Сборка:

T282828
docker build -f Dockerfile.build -t meshchatx-build:local .

Только wheel:

T282828
docker build -f Dockerfile.build --build-arg Te6edf3MESHCHATX_BUILD_TARGETSTff7b72=wheel -t meshchatx-build:wheel .


Скопируйте T383838/artifacts из готового образа на хост:

T282828
Te6edf3cidTff7b72=Tff7b72$(docker create meshchatx-build:localTff7b72)
docker cp Ta5d6ff"Tffd700${Te6edf3cidTffd700}Ta5d6ff:/artifactsTa5d6ff" ./meshchatx-artifacts
docker rm Ta5d6ff"Tffd700${Te6edf3cidTffd700}Ta5d6ff"


Поддержка архитектур

• Образ Docker: T383838amd64, T383838arm64
• Linux AppImage: T383838x64, T383838arm64
• Linux DEB: T383838x64, T383838arm64
• Windows: T383838x64, T383838arm64 (скрипты сборки есть)
• macOS: скрипты сборки (T383838arm64, T383838universal) для локальных сред
• Android: только universal APK (см. android/README.md)

Android

MeshChatX поддерживает нативные Android APK (не только Termux).

Сборка APK из исходников

Из корня репозитория:

T282828
T8b949e# 1) Собрать колёса Chaquopy для android/app/build.gradle
bash scripts/build-android-wheels-local.sh

T8b949e# 2) Собрать universal APK (один debug + один release за прогон; см. android/README.md)
Tffa657cd android
./gradlew --no-daemon :app:assembleDebug :app:assembleRelease


Один вариант Android. Gradle синхронизирует весь каталог T383838meshchatx/ в T383838app/src/main/python/meshchatx/, включая офлайн-колёса репозитория. Документированные и публикуемые сборки используют только universal: за один прогон один debug APK и один release APK, каждый со всеми нативными ABI из T383838android/app/build.gradle.

• Debug: T383838android/app/build/outputs/apk/debug/app-debug.apk
• Release: T383838android/app/build/outputs/apk/release/app-release-unsigned.apk

Примечания:

• Релизы по умолчанию не подписаны, пока не настроена подпись (T383838scripts/sign-android-apks.sh).
• Нативные ABI внутри universal APK задаются в T383838android/app/build.gradle (в т.ч. T383838armeabi-v7a, если включён). Сборка колёс для T383838armeabi-v7a требует Android SDK в T383838ANDROID_HOME (см. T383838android/README.md).
• Если в корне репо есть T383838dist/reticulum_meshchatx-*.whl (например из T383838python -m build --wheel -o dist .), обновление встроенного репозитория предпочитает эту wheel пакету MeshChatX с PyPI. В CI wheel собирается до шага Android Gradle.

Дополнительная документация:


Конфигурация

┌────────────────────────┬──────────────────────────────────────┬──────────────┬───────────────────┐
│ Аргумент │ Переменная окружения │ По умолчанию │ Описание │
├────────────────────────┼──────────────────────────────────────┼──────────────┼───────────────────┤
│ T383838--host │ T383838MESHCHAT_HOST │ T383838127.0.0.1 │ Адрес привязки в… │
│ T383838--port │ T383838MESHCHAT_PORT │ T3838388000 │ Порт веб-сервера │
│ T383838--no-https │ T383838MESHCHAT_NO_HTTPS │ T383838false │ Отключить HTTPS │
│ T383838--ssl-cert / T383838--ssl-key │ T383838MESHCHAT_SSL_CERT / T383838MESHCHAT_SSL_KEY │ (нет) │ Пути к PEM-серти… │
│ T383838--rns-log-level │ T383838MESHCHAT_RNS_LOG_LEVEL │ (нет) │ Уровень лога сте… │
│ T383838--headless │ T383838MESHCHAT_HEADLESS │ T383838false │ Не открывать бра… │
│ T383838--auth │ T383838MESHCHAT_AUTH │ T383838false │ Базовая аутентиф… │
│ T383838--reset-password │ T383838MESHCHAT_RESET_PASSWORD │ T383838false │ Сбросить сохране… │
│ T383838--storage-dir │ T383838MESHCHAT_STORAGE_DIR │ T383838./storage │ Каталог данных │
│ T383838--public-dir │ T383838MESHCHAT_PUBLIC_DIR │ авто/bundled │ Каталог фронтенд… │
└────────────────────────┴──────────────────────────────────────┴──────────────┴───────────────────┘

Ветки

┌────────┬────────────────────────────────────────────────────────────────────┐
│ Ветка │ Назначение │
├────────┼────────────────────────────────────────────────────────────────────┤
│ T383838master │ Стабильные релизы. Только код для продакшена. │
│ T383838dev │ Активная разработка. Возможны нестабильные или неполные изменения. │
└────────┴────────────────────────────────────────────────────────────────────┘

Разработка

Типичные задачи из T383838Taskfile.yml:

T282828
task install
task format
task lint
task Tffa657test
task build


Цели T383838Makefile - тонкие обёртки, делегирующие в T383838task (те же команды, что выше):

┌──────────────┬──────────────┬────────────────────────────────────────────┐
│ Команда │ Делегирует в │ Описание │
├──────────────┼──────────────┼────────────────────────────────────────────┤
│ T383838make install │ T383838task install │ Установить зависимости pnpm и UV │
│ T383838make run │ T383838task run │ Запуск MeshChatX через UV │
│ T383838make build │ T383838task build │ Сборка артефактов фронтенда и бэкенда │
│ T383838make lint │ T383838task lint │ ESLint, vue-tsc, knip, Ruff и basedpyright │
│ T383838make test │ T383838task test │ Тесты фронтенда и бэкенда │
│ T383838make clean │ T383838task clean │ Удалить артефакты сборки и node_modules │
└──────────────┴──────────────┴────────────────────────────────────────────┘

Версионирование

Текущая версия в репозитории: T3838384.8.2.

• Редактируйте для релизного бампа только поле T383838version в T383838package.json.
• Команда T383838pnpm run version:sync (также в начале T383838pnpm run build) распространяет эту версию в T383838pyproject.toml, T383838meshchatx/src/version.py, T383838THIRD_PARTY_NOTICES.txt (строка продукта), README / lang/README.\* (строки «текущая версия»), T383838docs/meshchatx_on_raspberry_pi.md (пример pipx) и вспомогательные поля T383838packaging/arch/PKGBUILD.
T383838meshchatx.__version__ читается из T383838meshchatx/src/version.py без импорта T383838meshchatx.src, поэтому обычный T383838import meshchatx остаётся лёгким.
• Записи changelog по-прежнему вносятся вручную при релизе.

Безопасность

• Встроенные проверки целостности и значения по умолчанию HTTPS/WSS в рантайме приложения.
• Сборка CI и релизы на GitHub Actions.

Добавление языка

Авторский рабочий процесс: ArgosTranslate, затем локальная LLM (Qwen 3 + Gemma 4).

Затем правки и улучшения от сообщества приветствуются через LXMF или любой доступный канал.

Обнаружение локали автоматическое. Добавьте файл в T383838meshchatx/src/frontend/locales/ (например T383838xx.json) с теми же ключами, что в T383838en.json, и строку верхнего уровня T383838_languageName для подписи в селекторе. Можно скопировать T383838en.json и перевести вручную; машинная генерация (в т. ч. Argos) необязательна и никогда не требуется.

По желанию: старт с Argos Translate: для чернового перевода из T383838en.json можно вызвать T383838scripts/argos_translate.py (форматирование, цветной вывод, защита плейсхолдеров вроде T383838{count}).

T282828
T8b949e# Установите argostranslate при необходимости
pipx install argostranslate

T8b949e# Запустите скрипт перевода
python scripts/argos_translate.py --from en --to xx --input meshchatx/src/frontend/locales/en.json --output meshchatx/src/frontend/locales/xx.json --name Ta5d6ff"Название языка"


После любой машинной прогонки пусть LLM или человек проверяет грамматику, контекст и тон (например формальный/неформальный стиль).

T383838pnpm test -- tests/frontend/i18n.test.js --run: проверка равенства ключей с T383838en.json.

Никаких других изменений в коде не требуется. Приложение, селектор языка и тесты обнаруживают локали из каталога T383838meshchatx/src/frontend/locales/ во время сборки.

Поддержка проекта

Пожертвования добровольны. Они помогают оплатить время и усилия на разработку этого приложения.

Как поддержать: donate.md (Monero, Ko-Fi, Buy Me a Coffee).

Авторы

Liam Cottle - оригинальный Reticulum MeshChat
RFnexus - парсер micron (JavaScript)
markqvist - Reticulum, LXMF, LXST

Лицензия

Собственные части проекта лицензированы по 0BSD.
Оригинальные upstream-части из Reticulum MeshChat остаются под MIT.
Полный текст и уведомления см. в ../LICENSE.


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────